$(function(){
	
	//构建角色列表
	$("#gridRole").datagrid({
	    width: "100%",
	    height: 'auto',
	    url: "../role/listData?random="+Math.random(),
	    method: 'get',
	    loadMsg: "数据加载中...",
	    pagination:true,
	    pageSize: 18,//每页显示的记录条数，默认为10
	    pageList:[18,20],//每页显示几条记录
	    striped: true,
	    toolbar:"#tbRole"
	});

	//构建菜单树
	createMenuTree();
	
});

//清空表单
function clearMenuFrom()
{
	$('#dlgRole').form('clear');
	menuTreeUncheck();
}

//添加角色
function dlgRoleOpenAdd()
{
	clearMenuFrom();
	dlgRoleOpen();
	$("#txtOpType").val("add");
}

/**
 * 构建操作列
 * val: the field value，也就是field:'id'。
 * row: the row record data。就是这一行的Json数据，包括你已经选择在Datagrid上显示的内容，和没显示的内容。
 */
function optColumn(val,row)
{
	var optStr="<a href='javascript:void(0)' onclick='javascript:delRole("+val+",\""+row.roleName+"\")' style='color:blue'><u>删除</u></a>";
	optStr+="&nbsp;&nbsp;";
	optStr+="<a href='javascript:void(0)' onclick='javascript:dlgRoleOpenEdit("+val+",\""+row.roleName+"\",\""+row.menuIds+"\")' style='color:blue'><u>编辑</u></a>";
	return optStr;
}

//条件查询
function searchRole()
{
	var roleName=$("#txtSearchRoleName").val();
	$('#gridRole').datagrid('load',{
		  roleName:roleName
	});
}

//打开角色编辑对话框
function dlgRoleOpen()
{
	$("#dlgRole").window('open');
}

//对话框取消编辑
function dlgRoleCancel()
{
	$("#dlgRole").window('close');
}

//添加角色-表单提交
function addRole()
{
	var nodes = $('#menuTree').tree('getChecked', ['checked','indeterminate']);
	var strMenuIds = '';
	for(var i=0; i<nodes.length; i++){
		if (strMenuIds != '') strMenuIds += ',';
		strMenuIds += nodes[i].id;
	}
	
	if(strMenuIds=="")
	{
		$.messager.alert("警告","请选择角色具有的权限","warning");
		return false;
	}
	
	$("#txtMenuIds").val(strMenuIds);

	 $('#frmRole').form('submit',{  
	        url:'../role/add',  
	        onSubmit:function(){
	            return $(this).form('validate');
	        },  
	        success:function(jsonstr){
	        	var data=JSON.parse(jsonstr); 
	            if(data.result==true)
	            {
	            	//提交成功处理
	            	clearMenuFrom();
	            	dlgRoleCancel();
	            	$("#gridRole").datagrid("load",{data:{random:function(){return Math.random();}}});
	            	$.messager.alert("提示",data.msg);
	            }
	            else
	            {
	            	$.messager.alert("提示",data.msg,"error");
	            }
	        }
	    }); 
}

/**
 * 删除角色
 *@param roleId:角色ID
 */
function delRole(roleId,roleName)
{
	$.messager.confirm("提示", "是否删除角色【"+roleName+"】？", function(r){
		if (r){
			$.ajax({
				type: "get",
				url: "../role/delete",
				data:{
					roleId:roleId
				},
				success: function(data){
					if(data.result==true)
					{
						$("#gridRole").datagrid("load",{data:{random:function(){return Math.random();}}});
					}
					else
		            {
		            	$.messager.alert("提示",data.msg,"error");
		            }
				}
			});
		}
	});
}

//构建菜单树
function createMenuTree()
{
	$.post('../menu/tree', function(data) {
		$('#menuTree').tree({
	    	checkbox:true,
	    	data:data
	    });
    }, 'json');
}

//菜单树取消选中
function menuTreeUncheck()
{
	var nodes = $('#menuTree').tree('getChecked');
	for(var i=0; i<nodes.length; i++){
		$('#menuTree').tree('uncheck', nodes[i].target);  
	}
}

/**
 * 编辑角色
 * 把信息填到编辑角色对话框里面
 * @param roleId ：角色ID
 * @param roleName ：角色名称
 * @param checkedMenuIds：当前角色具有的菜单权限ID，多个用,分割
 */
function dlgRoleOpenEdit(roleId,roleName,checkedMenuIds)
{
	$("#txtOpType").val("edit");
	$("#txtRoleId").val(roleId);
	$("#txtMenuIds").val(checkedMenuIds);
	$("#txtRoleName").textbox("setValue",roleName);

	if((null!=checkedMenuIds)&&(""!=checkedMenuIds))
	{
		var menuIdArr=new Array();
		menuIdArr=checkedMenuIds.split(",");
		menuIdArr.sort(function(a,b){return Number(a)<Number(b)?1:-1});
		for(var n=0;n<menuIdArr.length;n++)
		{
			var menuId=menuIdArr[n];
			var menuNode = $('#menuTree').tree('find', menuId);
			//检查子节点是否有被选中的，没有就选中本接口，有取消本节点选中，tree会默认半选
			var childChecked=false;
			var childNodes=$('#menuTree').tree('getChildren', menuNode.target);
			if((childNodes!=undefined)&&(childNodes!=null)&&(childNodes.lenght!=0))
			{
				var childNodesLength=childNodes.length;
				for(var m=0;m<childNodesLength;m++)
				{
					var childNode=childNodes[m];
					if(childNode.checked==true)
					{
						childChecked=true;
					}
				}
			}
			
			if(childChecked==false)
			{
				$('#menuTree').tree('check', menuNode.target);
			}
		}
	}
	
	//打开对话框
	dlgRoleOpen();
}

//修改角色提交表单
function editRole()
{
	var nodes = $('#menuTree').tree('getChecked', ['checked','indeterminate']);
	var strMenuIds = '';
	for(var i=0; i<nodes.length; i++){
		if (strMenuIds != '') strMenuIds += ',';
		strMenuIds += nodes[i].id;
	}
	
	if(strMenuIds=="")
	{
		$.messager.alert("警告","请选择角色具有的权限","warning");
		return false;
	}
	
	$("#txtMenuIds").val(strMenuIds);

	 $('#frmRole').form('submit',{  
	        url:'../role/edit',  
	        onSubmit:function(){
	            return $(this).form('validate');
	        },  
	        success:function(jsonstr){
	        	var data=JSON.parse(jsonstr); 
	            if(data.result==true)
	            {
	            	//提交成功处理
	            	clearMenuFrom();
	            	dlgRoleCancel();
	            	$("#gridRole").datagrid("load",{data:{random:function(){return Math.random();}}});
	            	$.messager.show({
            			title:'提示',
            			msg:data.msg,
            			timeout:2000,
            			showType:'slide',
            			style:{
            				right:'',
            				top:document.body.scrollTop+document.documentElement.scrollTop+document.body.clientHeight/2,
            				bottom:''
            			}
            		});
	            }
	            else
	            {
	            	$.messager.alert("提示",data.msg,"error");
	            }
	        }
	    }); 
}

//提交表单
function submitForm()
{
	var opType=$("#txtOpType").val();
	//新增
	if(opType=="add")
	{
		addRole();
	}
	
	//修改
	if(opType=="edit")
	{
		editRole();
	}
}